package com.zn.services;

import com.zn.common.resp.ApiResult;
import com.zn.dto.CheckReportDTO;
import com.zn.dto.VeiReportInfoDTO;
import com.zn.dto.VeiReportInfoDTO2;
import com.zn.pojo.ReportVerifyInfo;
import com.zn.pojo.ReportVerifyInfo2;
import com.zn.pojo.VeiReportInfo;
import com.zn.pojo.VeiReportInfo2;
import com.zn.pojo.android.VehicleImage;
import com.zn.pojo.android.VehicleResultImage;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface VeiReportInfoService {
    int addVeiReportInfo(Integer type, VeiReportInfo info, Integer uid);

    List<VeiReportInfo> getAllVeiReportInfo();

    VeiReportInfo getVeiReportInfoByRid(Integer rid);

    List<VeiReportInfoDTO> getUserReportByUid(Integer uid);

    List<VeiReportInfoDTO> getUserReportByStatus(Integer uid, Integer status);

    VeiReportInfo getUserReportByRid(Integer rid);

    boolean verifyReport(CheckReportDTO info);

    boolean auditReport(CheckReportDTO info);

    List<VeiReportInfoDTO> getAllUserReport();

    List<VeiReportInfoDTO> getAllUserReportByStatus(Integer status);

    int modifyReportByRid(VeiReportInfo info);

    int getStatusByRidAndUid(Integer reportId, Integer uid);

    int modifyReportStatus(Integer reportId, Integer uid, int status);

    ApiResult modifyReportInfo(Integer role, Integer uid , VeiReportInfo info);

    ApiResult modifyReport2Info(Integer role, Integer uid , VeiReportInfo2 info);


    String getReportErrorInfo(Integer rid,Integer status);

    XSSFWorkbook exportReportExcel(VeiReportInfo reportInfo);

    int addVeiReport2Info(VeiReportInfo2 info, Integer uid,Integer status);

    int saveVeiReportInfo(VeiReportInfo info, Integer uid);

    int removeReport1(Integer rid, Integer uid);

    List<VeiReportInfoDTO2> getUserReport2ByUid(Integer uid);

    int addReport1PrintCount(Integer rid);

    int removeReport2(Integer rid, Integer uid);

    List<VeiReportInfoDTO> getReportByHid(Integer status,Integer hid);

    VeiReportInfo2 getReport2ByRid(Integer rid);

    VeiReportInfo2 getVeiReportInfo2ByRid(Integer rid);

    List<VeiReportInfoDTO2> getAllUserReport2ByStatus(Integer status);

    List<VeiReportInfoDTO2> getReport2ByHid(Integer status, Integer hid);

    int modifyReportInfo2(VeiReportInfo2 info);

    List<VeiReportInfoDTO2> getUserReport2ByStatus(Integer uid, Integer status);

    int modifyReport2Status(Integer rid,Integer status);

    boolean checkReportNumberRepetition(String reportNumber);

    VeiReportInfo2 getUserReport2ByRid(Integer rid);

    boolean verifyReport2(CheckReportDTO info);

    boolean auditReport2(CheckReportDTO info);

    String getReport2ErrorInfo(Integer rid, Integer status);

    int addReport2PrintCount(Integer rid);

    XSSFWorkbook exportReport2Excel(VeiReportInfo2 info2);

    int modifyPrintTime(Integer rid);

    int modifyPrintTime2(Integer rid);

    int archiveReport1();

    int archiveReport2();

    boolean checkReport2NumberRepetition(String reportNumber);

    VeiReportInfo getVeiReportInfoByRidAndToken(Integer id, String token);

    VeiReportInfo2 getVeiReportInfo2ByRidAndToken(Integer id, String token);

    VeiReportInfo getReportByUUId(String uuid);

    int modifyAndroidReportImage(VeiReportInfo info, VehicleImage vri);

    ReportVerifyInfo getVeiReportStatusByRid(Integer rid);

    ReportVerifyInfo2 getVeiReport2StatusByRid(Integer rid);

    int modifyReportImage(VeiReportInfo report, VehicleImage vi);

    VeiReportInfo2 getReport2ByUUId(String uuid);

    int modifyReport2Image(VeiReportInfo2 report, VehicleImage vi);

    List<VeiReportInfoDTO2> hedaGetReport(Integer uid,Integer uid2,Integer uid3);

    XSSFWorkbook exportYsjlReportExcel(VeiReportInfo reportInfo, HttpServletResponse response);

    List<VeiReportInfo> getReportByUId(Integer uid);

    XSSFWorkbook exportTsReport2Excel(VeiReportInfo2 info2);

    List<VeiReportInfo> getReport1ByStatus(int status);

    List<VeiReportInfo2> getReport2ByStatus(int status);
}
